<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
Class Persone_db{
    
    /**
     *
     * inserisco una persona all'interno del db
     * tabelle coinvlte:
     * - persona
     * - persona_fisica
     * - recapito
     * 
     * @param type $data_persona_fisica
     * @param type $data_persona
     * @param type $data_recapito
     * @return type 
     */
    public static function insPersonaFisica($data_persona_fisica, $data_persona, $data_recapito){
        
        $retID = 0;
        
        try{
            require_once APPLICATION_PATH . "/models/Db/Db_Db.php";

            $data_persona_fisica['time_creazione_record'] = 'now()';
            //$data_persona_fisica['time_creazione_record'] = new Zend_Db_Expr('CURDATE()');
            $data_persona['time_creazione_record']        = 'now()';
            $data_persona['time_modifica_record']         = 'now()';
            $data_persona_fisica['time_modifica_record']  = 'now()';
            
            $db = Db_Db::conn();
            $ret = $db->insert('persona', $data_persona);
            
            $data_persona_fisica['id_persona'] = $db->lastInsertId();
            $retID = $data_persona_fisica['id_persona'];
            
            $ret2 = $db->insert('persona_fisica', $data_persona_fisica);
            
            
            //futuro: data_recapito
            $db->closeConnection();


        } catch(Zend_Db_Exception $e) {
            echo $e->getMessage();
        }
        
        return $retID;

    }
    
    /**
     *
     * verifico se il codice fiscale + già presente nel db.
     * 
     * @param varchar $cf
     * @return array 
     */
    public static function esisteCF($cf){
        
        $persona = array();
        
        try{
            require_once APPLICATION_PATH . "/models/Db/Db_Db.php";

            $db = Db_Db::conn();
            $statement = 'SELECT * FROM persona_fisica WHERE codice_fiscale=\''."$cf"."'";
            $persona=$db->fetchRow($statement);

            $db->closeConnection();
            
        } catch(Zend_Db_Exception $e) {
            echo $e->getMessage();
        }        
        
        return $persona;
        
    }
    
    /**
     * 
     * prelevo dal db le informazioni su una determinata persona
     *
     * @param int $id_persona 
     */
    public static function getPersona($id_persona) {
        
        $persona_generale = array('persona'=>'',
                                  'persona_fisica'=>null , 
                                  'persona_giuridica'=>null);
        
        try{
            require_once APPLICATION_PATH . "/models/Db/Db_Db.php";

            $db = Db_Db::conn();
            $statement = 'SELECT * FROM persona WHERE id_persona='.intval($id_persona);
            $persona = $db->fetchRow($statement);

            $persona_generale['persona'] = $persona;
            
            if ($persona['tipo_persona']=='fisica'){            
                $statement2 = 'SELECT * FROM persona_fisica WHERE id_persona='.intval($id_persona);
                $persona_fisica = $db->fetchRow($statement2);
                $persona_generale['persona_fisica'] = $persona_fisica;
            }elseif ($persona['tipo_persona']=='giuridica'){
                $statement2 = 'SELECT * FROM persona_giuridica WHERE id_persona='.intval($id_persona);
                $persona_giuridica = $db->fetchRow($statement2);
                $persona_generale['persona_giuridica'] = $persona_giuridica;                
            }
                
            $db->closeConnection();
            
        } catch(Zend_Db_Exception $e) {
            echo $e->getMessage();
        }        
        
        return $persona_generale;        
        
    }

    
    
    /**
     *
     * cerco le stringhe text all'interno delle
     * tabelle: 
     * - persona 
     * - persona_fisica 
     * - persona_giuridica
     * 
     * 
     * @param text $text
     * @return array 
     */
    public static function searchPersona($text){

        $persone = array();
        try{
            require_once APPLICATION_PATH . "/models/Db/Db_Db.php";

            $db = Db_Db::conn();
            
            $text = strip_tags(trim($text));
            $parole = explode(' ', $text);
            
            foreach ($parole as $parola) {
                $parola = $db->quote($parola);
                $statement1 = "SELECT persona.id_persona"
                                . " FROM persona"
                                . " INNER JOIN persona_fisica ON persona.id_persona = persona_fisica.id_persona" 
                                . " INNER JOIN lib_comune ON persona_fisica.id_lib_comune_residenza = lib_comune.id_lib_comune"                     
                                . " WHERE persona_fisica.nome=$parola OR persona_fisica.cognome=$parola OR persona_fisica.indirizzo_residenza=$parola OR persona_fisica.codice_fiscale=$parola OR lib_comune.descrizione=$parola";

                $statement2 = "SELECT persona.id_persona"
                                . " FROM persona"
                                . " INNER JOIN persona_giuridica ON persona.id_persona = persona_giuridica.id_persona" 
                                . " INNER JOIN lib_comune ON persona_giuridica.id_lib_comune = lib_comune.id_lib_comune"                     
                                . " WHERE persona_giuridica.ragione_sociale=$parola OR persona_giuridica.partita_iva=$parola OR persona_giuridica.indirizzo=$parola OR persona_giuridica.codice_fiscale=$parola OR lib_comune.descrizione=$parola";


                $persone[]=$db->fetchAll($statement1);
                $persone[]=$db->fetchAll($statement2);                 
                
            }
            
            $db->closeConnection();
            
        } catch(Zend_Db_Exception $e) {
            echo $e->getMessage();
        }
        
        return $persone;
    }    
}

?>
